// lodash
// first / last / toUpper / reverse / each / includes / find / findIndex

const _ = require('lodash');

const array = ['jack', 'tom', 'lucy', 'kate'];

console.log((_.first(array)));

console.log((_.last(array)));

console.log(_.toUpper(_.first(array)));

console.log(_.reverse(array));

const r = _.each(array,(item,index)=>{
    console.log(item, index);
})
console.log(r);

/**
 * _.includes：
 * 检查 value(值) 是否在 collection(集合) 中 
 * 
 * 返回值 (boolean): 如果找到 value 返回 true， 否则返回 false。
 *
 */ 
console.log(_.includes(array,"tom"));


/**
 * _.find:返回匹配到的第一个元素
 * 参数:collection (Array|Object): 一个用来迭代的集合。
       [predicate=_.identity] (Array|Function|Object|string): 每次迭代调用的函数。
       [fromIndex=0] (number): 开始搜索的索引位置。
 */

 var users = [
  { 'user': 'barney',  'age': 36, 'active': true },
  { 'user': 'fred',    'age': 40, 'active': false },
  { 'user': 'pebbles', 'age': 1,  'active': true }
];
 
// 返回匹配到的第一个元素
console.log(_.find(users, function(o) { return o.age < 40; }));
// => object for 'barney'
 
console.log(_.find(users, { 'age': 1, 'active': true }));
// => object for 'pebbles'
 
console.log(_.find(users, ['active', false]));
// => object for 'fred'
 
console.log(_.find(users, 'active'));
// => object for 'barney'


/**
 * findIndex:该方法类似_.find，区别是该方法返回第一个通过 predicate 判断为真值的元素的索引值（index），而不是元素本身。
 * 
 * 参数: array (Array): 要搜索的数组。
 *       [predicate=_.identity] (Array|Function|Object|string): 这个函数会在每一次迭代调用。
 *      [fromIndex=0] (number): The index to search from.
 * 返回值:(number): 返回找到元素的 索引值（index），否则返回 -1。
 */

 var users = [
  { 'user': 'barney',  'active': false },
  { 'user': 'fred',    'active': false },
  { 'user': 'pebbles', 'active': true }
];
 
console.log(_.findIndex(users, function(o) { return o.user == 'barney'; }));;
// => 0
 
console.log(_.findIndex(users, { 'user': 'fred', 'active': false }));;
// => 1
 
console.log(_.findIndex(users, ['active', false]));;
// => 0
 
console.log(_.findIndex(users, 'active'));;
// => 2
